package com.opal.system.mapper.oracle;

import com.opal.system.entity.ConditionSelectTbmSignhEntity;
import com.opal.system.entity.TbmSignbExtend;
import com.opal.system.entity.TbmSignhExtend;
import com.opal.system.entity.table.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public interface SignCardSingleMapper {

	public List<OrgHrorg> selectAllOrgHrorg();
	
	/**
	 * 	获取部门的上下级关系
	 * @return
	 */
	public List<OrgDeptExtend> selectAllOrgDept();
	
	public List<OrgDeptExtend> selectOrgDeptByPkHrorg(String pkHrorg);

	/**
	 * 根据部门id查询     2019、12、20用户需要显示部门
	 * @param id
	 * @return
	 */
	public List<OrgDeptExtend> selectOrgDeptByPkId(String id);

	public List<OrgDeptExtend> selectOrgDeptByPkHrorgs(List<String> pkHrorgs);

	/**
	 * 根据部门主键id获取人员数据
	 * @param pkDepts
	 * @return
	 */
	public List<BdPsndoc> getDeptPsndoc(List<String> pkDepts);
	
	/**
	 * 根据条件查询签卡单
	 * @param conditionSelectTbmSignhEntit
	 * @return
	 */
	public List<TbmSignhExtend> conditionSelectTbmSignhMapper(ConditionSelectTbmSignhEntity conditionSelectTbmSignhEntit);

	/**
	 * 分页需要的总数
	 * @param conditionSelectTbmSignhEntit
	 * @return
	 */
	int conditionSelectTbmSignhCountMapper(ConditionSelectTbmSignhEntity conditionSelectTbmSignhEntit);
	
	/**
	 * 根据部门pkDept获取部门的Dept：pk_vid   
	 * @param pkDepts
	 */
	public List<String> getDeptPkVid(List<String> pkDepts);
	
	
	/**
	 * 根据签卡单主表key获取TbmSignb
	 * @param pkSignh
	 */
	public List<TbmSignbExtend> getTbmSignbByPkSignh(String pkSignh);
	
	/**
	 * 查询是否封存
	 * @param pkOrg
	 */
	public String isSealflag(@Param("year") String year, @Param("month") String month, @Param("pkOrg") String pkOrg);
	
	/**
	 * ${tableType} in #{val}
	 * @param tableType   字段名
	 * @param val         字段值集合
	 * @return
	 */
	String 	getTbmSignregId2(@Param("tableType") String tableType, @Param("val") List<String> val);
	
	/**
	 * ${tableType} in #{val}
	 * @param tableType   字段名
	 * @param val         字段值集合
	 * @return
	 */
	String 	getTbmSignregId(@Param("tableType") String tableType, @Param("val") String val);
	
	/**
	 * 根据id删除登记表
	 * @param pkSignreg
	 * @return
	 */
	public int deleteTbmSignregById(String pkSignreg);
	
	/**
	 * 根据主键子表(经查询它也是登记表中唯一的)删除登记表
	 * @param pkSignb
	 * @return
	 */
	public int deleteTbmSignregByPkSignb(String pkSignb);
	
	/**
	 * 根据主键子表(经查询它也是登记表中唯一的)查询登记表
	 * @param pkSignb
	 * @return
	 */
	public List<TbmSignreg> selectTbmSignregByPkSignb(String pkSignb);
	
	/**
	 * 根据主键子表(经查询它也是登记表中唯一的)查询主表
	 * @param pkSignb
	 * @return
	 */
	public List<TbmSignh> selectTbmSignhByPkSignb(String pkSignb);
	
	/**
	 * 根据主键子表(经查询它也是登记表中唯一的)修改签卡登记
	 * @param tbmSignbExtend
	 * @return
	 */
	public int updateTbmSignregByPkSignb(TbmSignbExtend tbmSignbExtend);

	/**
	 * 根据id删除签卡单子表
	 * @param pkSignb
	 * @return
	 */
	public int deleteTbmSignbById(String pkSignb);
	
	/**
	 * 根据id删除签卡单主表
	 * @param pkSignh
	 * @return
	 */
	public int deleteTbmSignhById(String pkSignh);
	
	/**
	 * 根据主表主键删除签卡单子表
	 * @param pkSignh
	 * @return
	 */
	public int deleteTbmSignbByPkSignh(String pkSignh);

	/**
	 * 根据主表主键删除登记表
	 * @param pkSignh
	 * @return
	 */
	public int deleteTbmSignregByPkSignh(String pkSignh);
	
	/**
	 * 查询签卡原因    bd_defdoc.pk_defdoc = tbm_signb.signreason
	 * @return
	 */
	public List<BdDefdoc> getBdDefdoc();
	
	/**
	 * 修改TbmSignb
	 * @return
	 */
	public int updateTbmSignbByPkSignb(TbmSignbExtend tbmSignbExtend);

}
